import os
from flask import Flask, request, jsonify
from werkzeug.utils import secure_filename
from flask_cors import CORS

app = Flask(__name__)
# 添加CORS支持
CORS(app)

# 配置上传文件夹和允许的文件类型
UPLOAD_FOLDER = 'uploads'
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}

app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

# 确保上传文件夹存在
os.makedirs(UPLOAD_FOLDER, exist_ok=True)

def allowed_file(filename):
    return '.' in filename and \
           filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/')
def hello_world():
    return 'Hello World!'

# 新增接口：接收前端发送的综测信息
@app.route('/api/score', methods=['POST'])
def receive_score_info():
    try:
        # 获取前端发送的JSON数据
        data = request.get_json()
        
        # 如果没有接收到数据，返回错误
        if not data:
            return jsonify({'error': '没有接收到数据'}), 400
        
        # 在这里可以处理接收到的数据
        # 例如保存到数据库或进行其他操作
        print('接收到的数据:', data)
        
        # 返回成功响应
        return jsonify({'message': '数据接收成功', 'data': data}), 200
    except Exception as e:
        # 如果处理过程中出现异常，返回错误信息
        return jsonify({'error': f'处理数据时出错: {str(e)}'}), 500

@app.route('/api/upload', methods=['POST', 'OPTIONS'])
def upload_file():
    if request.method == 'OPTIONS':
        # 处理预检请求
        return jsonify({'status': 'ok'}), 200
    
    # 检查是否有文件在请求中
    if 'file' not in request.files:
        return jsonify({'error': '没有文件'}), 400
    
    file = request.files['file']
    
    # 如果用户没有选择文件
    if file.filename == '':
        return jsonify({'error': '没有选择文件'}), 400
    
    # 如果文件存在且文件类型允许
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return jsonify({'message': '文件上传成功', 'filename': filename}), 200
    else:
        return jsonify({'error': '文件类型不被允许'}), 400

if __name__ == '__main__':
    app.run(debug=True)
